<!-- 父级组件：控制除登录页以外所有的页面的共有头部与左侧菜单栏 -->
<template>
  <div style="display: flex;">
    <div :style="{width: (isCollapse ? '64px' : '208px')}">
      <!-- 左侧菜单栏 -->
      <!-- unique-opende:只有一项展开;
      :collapse-transition="false":展开菜单栏时默认有一个过渡时间，这样展开太慢，把这个时间关了（false）
       router:为路由，控制左侧各项菜单跳转的，例如：<el-menu-item index="vehicle">车辆列表</el-menu-item> 中index="vehicle"控制跳转到哪 -->
      <el-menu
          background-color="#3C82F5"
          style="width:100%;height: 100vh"
          text-color="#fff"
          active-text-color="#ff0"
          unique-opened
          :collapse="isCollapse"
          router
          :collapse-transition="false"
      >
        <!-- 左侧菜单栏顶部条 -->
        <el-row style="padding-top:10px">
          <el-col :span="2"></el-col>
          <el-col :span="7" style="padding-left: 8px">
            <!-- 把传上去的方图片切成圆的，比如头像 -->
            <el-avatar src="/imgs/admin/logo.png" style="width: 35px;height: 35px;"></el-avatar>
          </el-col>
          <el-col :span="isCollapse ? 0 : 13">
            <span style="color:#fff;font-weight: bold;position: relative;top:8px;left: 2px;">智慧车辆</span>
          </el-col>
        </el-row>
        <el-sub-menu index="1">
          <template #title>
            <el-icon style="font-size: 21px;"><User/></el-icon>
            <span>用户管理</span>
          </template>
          <el-menu-item index="user">用户列表</el-menu-item>
        </el-sub-menu>
        <el-sub-menu index="2">
          <template #title>
            <el-icon style="font-size: 21px;"><Van/></el-icon>
            <span>车辆管理</span>
          </template>
          <el-menu-item index="vehicle">车辆列表</el-menu-item>
        </el-sub-menu>
        <el-sub-menu index="3">
          <template #title>
            <el-icon style="font-size: 21px;"><Location/></el-icon>
            <span>围栏管理</span>
          </template>
          <el-menu-item index="geofence">电子围栏</el-menu-item>
        </el-sub-menu>
        <el-sub-menu index="4">
          <template #title>
            <el-icon style="font-size: 21px;"><Place/></el-icon>
            <span>调度管理</span>
          </template>
          <el-menu-item index="/application">用车申请</el-menu-item>
          <el-menu-item index="/audit">用车审批</el-menu-item>
          <el-menu-item index="/distribute">车辆分配</el-menu-item>
        </el-sub-menu>
        <el-sub-menu index="5">
          <template #title>
            <el-icon style="font-size: 21px;"><MessageBox/></el-icon>
            <span>字典管理</span>
          </template>
          <el-menu-item index="dict">字典列表</el-menu-item>
        </el-sub-menu>
      </el-menu>
    </div>
    <div :style="{width: (isCollapse ? 'calc(100% - 64px)' : 'calc(100% - 208px)')}">
      <!-- 右侧顶部条-->
      <el-header style="height: 10vh;background-color: #fff;padding-top:22px">
        <!-- 第一行 -->
        <el-row>
          <!-- 展开图标 -->
          <el-col :span="18">
            <el-icon style="font-size: 21px" @click="changeCllopsed"><Expand/></el-icon>
          </el-col>
          <!-- 下拉菜单 -->
          <el-col :span="6" style="position: relative;">
            <el-dropdown trigger="click" style="position: absolute;right: 20px;">
              <span style="font-size: 19px;font-weight: bold">
                {{user.username}}
                <el-icon><arrow-down /></el-icon>
              </span>
              <template #dropdown>
                <el-dropdown-menu>
                  <el-dropdown-item @click="logout()">退出登录</el-dropdown-item>
                </el-dropdown-menu>
              </template>
            </el-dropdown>
          </el-col>
        </el-row>
        <!-- 右侧顶部条：面包屑导航 -->
        <!-- separator="/" 是定义分隔符的样子为"/" 例：（首页/用户管理/用户列表）-->
        <el-breadcrumb separator="/" style="position: relative;top:20px;">
          <el-breadcrumb-item>首页</el-breadcrumb-item>
          <el-breadcrumb-item v-for="item in breadcrumb">{{item}}</el-breadcrumb-item>
<!--          <el-breadcrumb-item>用户管理</el-breadcrumb-item>-->
<!--          <el-breadcrumb-item>用户列表</el-breadcrumb-item>-->
        </el-breadcrumb>
      </el-header>
      <!-- 右侧可变区域 -->
      <!--  -->
      <el-main style="height: 90vh; padding: 0; overflow-y: auto;">
        <router-view/>
      </el-main>
      <router-view/>
    </div>
  </div>
</template>

<script setup>
import {onMounted, ref} from "vue";
  import VehicleView from "@/views/vehicle/VehicleView.vue";
import {useRoute, useRouter} from "vue-router";

  /* 控制着左侧的菜单是展开还是关闭true（展开）,false（关闭） */
  const isCollapse = ref(true)

  //获取当前登录用户的数据
  const user = ref(getUser());

  //定义处理左侧菜单栏折叠的方法
  const changeCllopsed = () => {
    isCollapse.value = !isCollapse.value;
  }

  //定义退出登录的方法
  const logout = () => {
    //这里不用localStorage.clear()，因为localStorage.clear()会清空所有数据（我们还会保存一些其它的数据），这里我们只清空了user数据
    localStorage.removeItem('user');
    //跳转到登录页面
    // 第一种跳转方式：router.push('/login');
    // 第二周跳转方式
    window.location.href = '/login';
    // 清空取出来的user对象数据，避免在退出登录后仍然显示用户信息
    user.value = '';
  }

  //定义数组用来保存当前面包屑导航显示的值
  const breadcrumb = ref([])
  //定义对象用来保存 Path 与 面包屑 的对应关系
  let map = {
    '/user':['用户管理','用户列表'],
    '/vehicle':['车辆管理','车辆列表'],
    '/geofence':['围栏管理','电子围栏'],
    '/application':['调度管理','申请列表'],
    '/audit':['调度管理','调度审核'],
    '/distribute':['调度管理','用车分配'],
    '/dict':['字典管理','字典列表']
  }

  //userRoute() 是Vue-router 提供的一个方法，用于获取当前路由对象（含路由路径和路由状态）
  const route = useRoute();
  //自定义更新面包屑值的方法
  const updateBreadcrumb = (route) => {
    //从当前路由对象中获取当前的路径path
    const path = route.path;
    //根据path更新面包屑显示的值
    breadcrumb.value = map[path];
  }
  //一进入页面就立即调用更新面包屑导航值的函数，只有在第一次进入页面时会调用
  onMounted(()=>{
    updateBreadcrumb(route);
  })
//获取路由守卫，监听路由，只要path发生了改变（包含点击左侧菜单栏）就立即更新面包屑
  const router = useRouter();
  router.beforeEach((to, from, next) => {
    updateBreadcrumb(to);
    next();
  })
</script>
